// Copyright 2023 Srhino Co., Ltd. All rights reserved.

package log

import "go.uber.org/zap"

var defaultWrappedLogger WrappedLogger

func SetDefaultWrappedLogger(logger WrappedLogger) {
	if logger != nil {
		defaultWrappedLogger = logger
	}
}

func GetZapLogger() *zap.Logger {
	return defaultWrappedLogger.GetZapLogger()
}

func GetSugaredLogger() *zap.SugaredLogger {
	return defaultWrappedLogger.GetSugaredLogger()
}

func GetLogger() Logger {
	return defaultWrappedLogger.GetLogger()
}

func Sync() error {
	if defaultWrappedLogger != nil {
		return defaultWrappedLogger.Sync()
	}
	return nil
}

func Debug(args ...interface{}) {
	if defaultWrappedLogger != nil {
		defaultWrappedLogger.Debug(args...)
	}
}

func Info(args ...interface{}) {
	if defaultWrappedLogger != nil {
		defaultWrappedLogger.Info(args...)
	}
}

func Warn(args ...interface{}) {
	if defaultWrappedLogger != nil {
		defaultWrappedLogger.Warn(args...)
	}
}

func Error(args ...interface{}) {
	if defaultWrappedLogger != nil {
		defaultWrappedLogger.Error(args...)
	}
}

func Panic(args ...interface{}) {
	if defaultWrappedLogger != nil {
		defaultWrappedLogger.Panic(args...)
	}
}

func Fatal(args ...interface{}) {
	if defaultWrappedLogger != nil {
		defaultWrappedLogger.Fatal(args...)
	}
}

func Debugf(format string, args ...interface{}) {
	if defaultWrappedLogger != nil {
		defaultWrappedLogger.Debugf(format, args...)
	}
}

func Infof(format string, args ...interface{}) {
	if defaultWrappedLogger != nil {
		defaultWrappedLogger.Infof(format, args...)
	}
}

func Warnf(format string, args ...interface{}) {
	if defaultWrappedLogger != nil {
		defaultWrappedLogger.Warnf(format, args...)
	}
}

func Errorf(format string, args ...interface{}) {
	if defaultWrappedLogger != nil {
		defaultWrappedLogger.Errorf(format, args...)
	}
}

func Panicf(format string, args ...interface{}) {
	if defaultWrappedLogger != nil {
		defaultWrappedLogger.Panicf(format, args...)
	}
}

func Fatalf(format string, args ...interface{}) {
	if defaultWrappedLogger != nil {
		defaultWrappedLogger.Fatalf(format, args...)
	}
}
